package day6.HomeWork;

import java.util.*;

//4.选做题目
//a.双色球规则：双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。
//红色球号码从1—33中选择；蓝色球号码从1—16中选择；请随机生成一注双色
//球号码。（要求同色号码不重复）
//提示:可以使用set集合存储红号
//自己手动输入自己投注的双色球号码   与随机产生的双色球比较
//获奖规则如下
//0-2个红色球+蓝色球    5元           六等奖
//4个红色球            10元          五等奖
//3个红色球+蓝色球      10元          五等奖
//5个红色球            200元         四等奖
//4个红色球+蓝色球      200元         四等奖
//5个红色球+蓝色球      30000元       三等级
//6个红色球            150000元      二等级
//6个红色球+蓝色球      5000000元     一等奖
public class ChooseA {
    //机器生成的红号   set
    static Set<Integer> red = new TreeSet<>(); //有序    可以对String 数字类型 自然排列
    //机器生成的蓝号
    static Integer blue;
    //用户的蓝号
    static Set<Integer> userRed = new TreeSet<>();
    //用户的蓝号
    static Integer userBlue;
    //相同红号的数量
    static int redCount = 0;
    //相同蓝号的数量
    static int blueCount = 0;

    public static void main(String[] args) throws InterruptedException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的6个红号(1-33)");
        while (userRed.size() < 6) {
            int n = sc.nextInt();
            if (n < 1 || n > 33) continue;
            userRed.add(n);
        }
        System.out.println("请输入你的1个蓝号(1-16)");
        while (true) {
            int n = sc.nextInt();
            if (n < 1 || n > 16) continue;
            userBlue = n;
            break;
        }
        System.out.println("您投入的红号为:" + userRed + ", 蓝号:" + userBlue);

        System.out.println("系统开始生成双色球号码，请稍等...3S");
        for (int i = 0; i < 3; i++) {
            Thread.sleep(1000); //睡眠一秒
            System.out.println("请稍等.." + (3 - i) + "S");
        }
        //给红球赋值
        Random r = new Random();
        while (red.size() < 6) {
            red.add(r.nextInt(33) + 1);
        }
        blue = r.nextInt(16) + 1;
        System.out.println("双色球生成成功！");
        System.out.println("红号:" + red + ", 蓝号:" + blue);

        //结果1：统计 红球和篮球 相同的个数
        stats();
        //结果2：计算金额
        result();
    }

    private static void stats() throws InterruptedException {
        //交集
        System.out.println("统计结果...");
        Thread.sleep(1000);
        Set<Integer> newSet = new TreeSet<>(userRed);
        newSet.retainAll(red); //统计相同的部分
        redCount = newSet.size();
        if (blue == userBlue) blueCount++;
        System.out.println("您中了" + redCount + "个红号， " + blueCount + "个蓝号");
    }

    private static void result() {
        if (redCount <= 2 && blueCount == 1)
            System.out.println("六等奖，获取5元");
        if ((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1))
            System.out.println("五等奖，获取10元");
        if ((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1))
            System.out.println("四等奖，获取200元");
        if (redCount == 5 && blueCount == 1)
            System.out.println("三等奖，获取3000元");
        if (redCount == 6 && blueCount == 0)
            System.out.println("二等奖，获取15000元");
        if (redCount == 6 && blueCount == 1)
            System.out.println("一等奖，获取10元");
    }
}
